package com.example.myapplication.ui.home

import android.content.Intent
import android.os.Build
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import android.widget.TextView
import androidx.annotation.RequiresApi
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import com.example.myapplication.databinding.FragmentHomeBinding
import kotlin.random.Random

class HomeFragment : Fragment() {

    private var _binding: FragmentHomeBinding? = null

    // 此属性仅在 onCreateView 和 onDestroyView 之间有效
    private val binding get() = _binding!!

    // 生命周期之一：组件创建时会触发
    @RequiresApi(Build.VERSION_CODES.O)
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {

        // 初始化 ViewModel
        val homeViewModel = ViewModelProvider(this)[HomeViewModel::class.java]

        // 绑定视图
        _binding = FragmentHomeBinding.inflate(inflater, container, false)
        val root: View = binding.root

        val textView: TextView = binding.textHome
        // 监听实时数据,更新 textView 的内容
        homeViewModel.text.observe(viewLifecycleOwner) {
            // it 代表实时数据，当 Lambda 只有单个参数时，可以省略参数声明，直接通过 it 访问
            textView.text = it
        }

        // 测试点击事件
        val btn: Button = binding.btn
        btn.setOnClickListener {

            val location = IntArray(2)
            btn.getLocationOnScreen(location)
            println("控件左边缘距离:${location[0]}")
            println("控件顶部边缘距离:${location[1]}")

            // 循环添加文字
            var str = ""

            for (i in 1..15) {
                str += "test文字:${i}\n"
                textView.text = str
            }

            println("字符串长度：${textView.length()}")

            println("添加了十行文字")
        }

        // 最小化按钮，添加悬浮球
        val btn2: Button = binding.btn2
        btn2.setOnClickListener {
            // 启动服务
            val serviceIntent = Intent(requireActivity(), HomeService::class.java)
            requireActivity().startService(serviceIntent)

            // 最小化软件
//            activity?.moveTaskToBack(true)
        }

        val btn3: Button = binding.btn3
        btn3.setOnClickListener() {

            // 停止服务
            val serviceIntent = Intent(requireActivity(), HomeService::class.java)
            requireActivity().stopService(serviceIntent)

        }

        // 发送广播
        val btn4: Button = binding.btn4
        btn4.setOnClickListener() {
            println("点击了发送广播")

            // 定义广播 Action（需与服务端一致）
//            val intent = Intent("com.example.action.ACTION_CUSTOM_EVENT").apply {
//                putExtra("command", "初次成功，我很高兴") // 附加参数
//                setPackage(requireActivity().packageName) // 指定接收方包名（防止广播劫持）
//            }
//
//            // 发送广播
//            requireActivity().sendBroadcast(intent)

            // 最小化应用
            activity?.moveTaskToBack(true)
        }

        val btn5: Button = binding.btn5
        btn5.setOnClickListener() {
            println("模拟点击")

            // 定义广播 Action（需与服务端一致）
            val intent = Intent("com.example.action.CUSTOM_TIMED_TASK_SWIPE").apply {
                putExtra("customType", "simulateClick") // 附加参数
                setPackage(requireActivity().packageName) // 指定接收方包名（防止广播劫持）
            }

            // 发送广播
            requireActivity().sendBroadcast(intent)
        }

        val btn6:Button = binding.btn6
        btn6.setOnClickListener(){
            // 参数
            // 是否浏览评论
            var previewComment = false
            // 概率
            val previewPCT = 20

            // 是否浏览评论
            var addComment = false
            // 概率
            val commentPCT = 20

            // 是否点赞
            var addLike = false
            // 概率
            val likePCT = 10

            // 判断是否浏览评论(随机)
            val num = Random.nextInt(0, 100)
            if (num <= previewPCT) {
                previewComment = true
                Log.d("是否浏览评论", "true")
                val time = Random.nextInt(3, 16)
                Log.d("浏览时间", time.toString() + "s")
            } else {
                Log.d("是否浏览评论", "false")
            }

            // 判断是否评论(随机)
            val num2 = Random.nextInt(0, 100)
            if (num2 <= commentPCT) {
                addComment = true
                Log.d("是否评论", "true")
            } else {
                Log.d("是否评论", "false")
            }

            // 随机判断是否点赞
            val num3 = Random.nextInt(0, 100)
            if (num3 <= likePCT) {
                addLike = true
                Log.d("是否点赞", "true")
            } else {
                Log.d("是否点赞", "false")
            }
        }

        return root
    }

    // 生命周期之一：销毁视图时会触发
    override fun onDestroyView() {
        super.onDestroyView()
        _binding = null
    }
}